package com.xyy.saas.payment.cores.vo;

import com.xyy.saas.payment.cores.enums.*;

import java.io.Serializable;
import java.util.Map;

/**
 * @Author: wuqiongda
 * @Date: 2019/12/23 17:48
 */
public class PayVo implements Serializable {
    private static final long serialVersionUID = -6158497501779222197L;

    /**
     * 收款方id 非必传（自营平台收款时非必传，有代理商时必传）
     */
    private String payeeId;
    /**
     * 业务订单号，业务方的订单号，要求唯一
     */
    private String businessOrderNo;
    /**
     * 订单原始金额（单位为分），货币目前只支持人民币，默认为人民币 取值范围 1~1000000000 包含边界值
     */
    private Integer amount;
    /**
     * 异步结果回调地，传入group属性
     * wiki地址 ：https://wiki.int.ybm100.com/pages/viewpage.action?pageId=291505813
     *
     * 回调地址统计 ：https://wiki.int.ybm100.com/pages/viewpage.action?pageId=352947865
     */
    private String callback;
    /**
     * 接口调用方的标识，支付平台分配，用于验签
     */
    private InvokerEnum invoker;
    /**
     * 接口调用方的业务类型, 支付平台分配
     */
    private BusinessTypeEnum businessType;
    /**
     * 订单发起方的业务类型, 用于标识用户id归属，支付平台分配
     */
    private BusinessIdTypeEnum businessIdType;
    /**
     * 订单业务类型, 用于标识订单归属，支付平台分配
     */
    private BusinessOrderTypeEnum businessOrderType;
    /**
     * 支付渠道
     */
    private ChannelEnum channel;
    /**
     * 商品描述 例如：'腾讯充值中心-QQ会员充值' 要求长度小于128位
     */
    private String body;
    /**
     * 扩展参数 map格式转成json 没有就不填
     ***************************************************************
     * 微信支付需要传订单过期时间 key:timeExpire value:yyyyMMddHHmmss（非必传，聚合支付方式默认支持24h，如果提示订单过期，请重新调用去支付接口）
     * 微信小程序支付需要传入用户openId  key:openId  value:用户的openId
     * 微信扫码支付需要传入商品id  业务自行维护 key:productId  value:商品ID
     ***************************************************************
     * 银联pc支付需要支付成功后跳转的地址 key:resultUrl value:网页地址
     ***************************************************************
     * 支付宝小程序支付需要传入买家支付宝ID  key:buyerId value:买家支付宝ID
     ***************************************************************
     */
    private String mapJson;

    /**
     * 渠道支付方式
     */
    private PayModeEnum payMode;

    public String getPayeeId() {
        return payeeId;
    }

    public void setPayeeId(String payeeId) {
        this.payeeId = payeeId;
    }

    public String getBusinessOrderNo() {
        return businessOrderNo;
    }

    public void setBusinessOrderNo(String businessOrderNo) {
        this.businessOrderNo = businessOrderNo;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    public String getCallback() {
        return callback;
    }

    public void setCallback(String callback) {
        this.callback = callback;
    }

    public InvokerEnum getInvoker() {
        return invoker;
    }

    public void setInvoker(InvokerEnum invoker) {
        this.invoker = invoker;
    }

    public BusinessTypeEnum getBusinessType() {
        return businessType;
    }

    public void setBusinessType(BusinessTypeEnum businessType) {
        this.businessType = businessType;
    }

    public BusinessIdTypeEnum getBusinessIdType() {
        return businessIdType;
    }

    public void setBusinessIdType(BusinessIdTypeEnum businessIdType) {
        this.businessIdType = businessIdType;
    }

    public BusinessOrderTypeEnum getBusinessOrderType() {
        return businessOrderType;
    }

    public void setBusinessOrderType(BusinessOrderTypeEnum businessOrderType) {
        this.businessOrderType = businessOrderType;
    }

    public ChannelEnum getChannel() {
        return channel;
    }

    public void setChannel(ChannelEnum channel) {
        this.channel = channel;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public String getMapJson() {
        return mapJson;
    }

    public void setMapJson(String mapJson) {
        this.mapJson = mapJson;
    }

    public PayModeEnum getPayMode() {
        return payMode;
    }

    public void setPayMode(PayModeEnum payMode) {
        this.payMode = payMode;
    }
}
